package com.example.duckshop.ui.activity;

import android.app.Activity;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.os.Handler;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import com.example.duckshop.R;
import com.example.duckshop.util.MySqliteOpenHelper;
import com.example.duckshop.util.SPUtils;
import com.example.duckshop.util.StatusBarUtil;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 开屏页面
 */
public class OpeningActivity extends AppCompatActivity {
    private Activity myActivity;
    MySqliteOpenHelper helper = null;
    private SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        myActivity = this;
        helper = new MySqliteOpenHelper(this);
        //设置页面布局
        setContentView(R.layout.activity_opening);
        try {
            initView();
        } catch (IOException | JSONException e) {
            e.printStackTrace();
        }

    }

    //使用了Handler的postDelayed方法延迟执行一个Runnable，在Runnable中判断是否当前Activity正在显示,如果不在显示就结束Activity并返回。
    //然后从SPUtils中获取是否是第一次使用这个应用程序，和当前用户的id。其中SPUtils是一个封装了SharedPreferences的工具类，用来在应用程序中保存和读取数据。
    private void initView() throws IOException, JSONException {
        StatusBarUtil.setStatusBar(myActivity,true);//设置当前界面是否是全屏模式（状态栏）
        StatusBarUtil.setStatusBarLightMode(myActivity,true);//状态栏文字颜色
        new Handler().postDelayed(new Runnable() {
            @Override
            /**
             * 首先通过getIntent()方法获取到启动当前Activity的Intent对象，然后通过getFlags()方法获取到该Intent对象的flags标志，
             * 并与Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT进行按位与运算，判断是否该Activity在当前任务栈的最前端。
             * 如果是，则说明当前Activity已经处于最前端了，没有必要再执行其他操作，直接调用finish()方法销毁当前Activity即可。
             * 如果不是，则说明当前Activity不在最前端，对它执行finish()方法的效果是将其从任务栈中删除，然后返回之前的一个Activity
             */
            public void run() {
                if((getIntent().getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0){
                    finish();
                    return;
                }
                Boolean isFirst= (Boolean) SPUtils.get(myActivity,SPUtils.IF_FIRST,true);
                Integer userId= (Integer) SPUtils.get(myActivity,SPUtils.USER_ID,0);
                if (isFirst){//第一次进来  初始化本地数据
                    SQLiteDatabase db = helper.getWritableDatabase();
                    SPUtils.put(myActivity,SPUtils.IF_FIRST,false);//第一次
                    //初始化数据
                    //获取json数据
                    String rewardJson = "";
                    String rewardJsonLine;
                    //assets文件夹下db.json文件的路径->打开db.json文件
                    //通过BufferedReader类读取应用程序assets文件夹下的db.json文件内容，读取的方式是一行一行读取，当读取到null的时候循环结束。
                    BufferedReader bufferedReader = null;
                    try {
                        bufferedReader = new BufferedReader(new InputStreamReader(myActivity.getAssets().open("db.json")));
                        while (true) {
                            if (!((rewardJsonLine = bufferedReader.readLine()) != null)) break;
                            rewardJson += rewardJsonLine;
                        }
                        JSONObject jsonObject = new JSONObject(rewardJson);
                        //使用getJSONArray方法从jsonObject对象中获取名称为"shop"的数组对象，赋值给newsList变量。
                        JSONArray newsList = jsonObject.getJSONArray("shop");//获得列表
                        //把物品列表保存到本地
                        for (int i = 0, length = newsList.length(); i < length; i++) {//初始化
                            JSONObject o = newsList.getJSONObject(i);
                            int typeId = o.getInt("typeId");
                            String title = o.getString("title");
                            String img = o.getString("img");
                            String content = o.getString("content");
                            String price = o.getString("price");
                            String date = sf.format(new Date());
                            String insertSql = "insert into shop(typeId,title,img,content,price,date) values(?,?,?,?,?,?)";
                            db.execSQL(insertSql,new Object[]{typeId,title,img,content,price,date});
                        }
                        db.close();
                    } catch (IOException | JSONException e) {
                        e.printStackTrace();
                    }
                }
                //两秒后跳转到主页面
                Intent intent = new Intent();
                if (userId > 0) {//已登录
                    intent.setClass(OpeningActivity.this, MainActivity.class);
                }else {
                    intent.setClass(OpeningActivity.this, LoginActivity.class);
                }
                startActivity(intent);
                finish();
            }
        }, 2000);
    }


    @Override
    public void onBackPressed() {

    }
}
